A computer can include firmware that performs initialization of the computer's hardware during the boot process of the computer. The firmware can also load and perform setup operations for the operating system of the computer. The firmware can be implemented in a read-only memory (ROM) affixed to the motherboard of the computer. A computer can also include, or be attached to, one or more devices such as video cards, network adapters, storage drivers, peripheral interconnect (PCI) devices, universal serial bus (USB) devices. The devices can be on-board devices directly attached to the motherboard. The devices can also be add-on devices that are connected to the motherboard via slots (e.g., a PCI card slot) or connected to the motherboard via a USB port, as just some examples.
Some devices, whether on-board or add-on, include an option (read-only memory) ROM. An option ROM can include computer instructions that are called by the computer system's firmware during boot to handle some device initialization tasks. In some systems, the firmware hands-off execution of the boot process to a device's option ROM to perform execution of initialization tasks for the device, and the option ROM may then hand-off execution of the boot process back to the firmware once initialization tasks for the device are complete. Examples of devices having an option ROM can include video cards, network adapters, and storage drivers for redundant array of inexpensive disks (“RAID”) modules.
With the development of the Unified Extensible Firmware Interface (“UEFI”) standard, vendors of add-on devices began implementing multi-image option ROMs to support legacy non-UEFI firmware and UEFI compliant firmware. For example, a multi-image option ROM can include two images—a legacy option ROM image and a UEFI compliant option ROM image. A legacy option ROM image can include computer instructions for performing device initialization in computer platforms that are not UEFI complaint, that use Basic Input/Output System (“BIOS”) firmware (e.g., a platform using AMIBIOS), or for computing platforms using a combination of non-UEFI compliant and UEFI complaint firmware. In some cases, vendors of on-board devices may also implement multi-option ROMs including a legacy option ROM image and a UEFI complaint option ROM image. During a boot cycle, the computer firmware should execute only one option ROM per device. Traditionally, the policy for executing one of the images on a multi-image option ROM is implemented in firmware code and configurable in firmware source code, but may not modifiable once the firmware image is created.
It is with respect to these and other considerations that the disclosure made herein is presented.